<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>

<!--
	Copyright (c) 1999-2008 by Digital Mars
	All Rights Reserved
	Written by Walter Bright
	www.digitalmars.com
  -->

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" >
<title>std.perf - D Programming Language - Digital Mars</title>
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="icon" type="image/gif" href="./holy.gif" />
</head>

<body>
<div id="heading">
	<a href="http://www.digitalmars.com/"><img src="./dmlogo.gif" width="270" height="53" border="0" alt="www.digitalmars.com" align="left"></a>
	<p align="right">D Programming Language 1.0</p>


	<div id="headingNav">
	<ul>
	<li><a href="http://www.prowiki.org/wiki4d/wiki.cgi?DocComments/" title="Read/write comments and feedback">Comments</a></li>
	<li><a href="http://www.digitalmars.com/d/1.0/index.html" title="D Programming Language" class="dlink">D</a></li>
	<li><a href="http://www.digitalmars.com/advancedsearch.html" title="Search Digital Mars web site">Search</a></li>
	<li><a href="http://www.digitalmars.com/" title="www.digitalmars.com">Home</a></li>
	</ul>
	</div>

	<div id="lastupdate">Last update Wed Oct  1 23:47:52 2008</div>
</div>

<!-- -->

<div id="navigation">
    <div class="navblock">
<form method="get" action="http://www.google.com/search">
<div id="searchbox">
<input id="q" name="q" size="10" value="RTL Search" onFocus='if(this.value == "RTL Search"){this.value="";}'>
<input type="hidden" id="domains" name="domains" value="www.digitalmars.com">
<input type="hidden" id="sitesearch" name="sitesearch" value="www.digitalmars.com/d/1.0/phobos">
<input type="hidden" id="sourceid" name="sourceid" value="google-search">
<input type="submit" id="submit" name="submit" value="Go">
</div>
</form>
<div id="toctop">
    <ul>
	<li><a href="http://www.digitalmars.com/d/1.0/index.html" title="D Programming Language">D ...</a></li>
	<li><a href="http://www.digitalmars.com/d/1.0/lex.html" title="D Language Specification">Language ...</a></li>
	<li><a href="phobos.html" title="D Runtime Library">Phobos ...</a></li>
	<li><a href="http://www.digitalmars.com/d/1.0/comparison.html" title="Language Comparisons">Comparisons ...</a></li>
    </ul>
</div>
</div>
    <div class="navblock">
<ul>
<li><a href="index.html" title="Index of all HTML files">Index</a></li>
</ul>
    <ul>
	<li><a href="object.html" title="root of object hierarchy">object</a></li>
    </ul>
    <h2><a href="phobos.html#std" title="D standard modules">std</a></h2>
    <ul>
	<li><a href="std.base64.html" title="Encode/decode base64 format">std.base64</a></li>
	<li><a href="std.bind.html" title="Function argument binding">std.bind</a></li>
	<li><a href="std.bitarray.html" title="Arrays of bits">std.bitarray</a></li>
	<li><a href="std.boxer.html" title="Box/unbox types">std.boxer</a></li>
	<li><a href="std.compiler.html" title="Information about the D compiler implementation">std.compiler</a></li>
	<li><a href="std.conv.html" title="Conversion of strings to integers">std.conv</a></li>
	<li><a href="std.cover.html" title="D coverage analyzer">std.cover</a></li>
	<li><a href="std.cpuid.html" title="CPU identification">std.cpuid</a></li>
	<li><a href="std.ctype.html" title="Simple character classification">std.ctype</a></li>
	<li><a href="std.date.html" title="Date and time functions">std.date</a></li>
	<li><a href="std.demangle.html" title="Demangle D names">std.demangle</a></li>
	<li><a href="std.file.html" title="Basic file operations">std.file</a></li>
	<li><a href="std.format.html" title="Formatted conversions of values to strings">std.format</a></li>
	<li><a href="std.gc.html" title="Control the garbage collector">std.gc</a></li>
	<li><a href="std.intrinsic.html" title="Compiler built in intrinsic functions">std.intrinsic</a></li>
	<li><a href="std.math.html" title="the usual math functions">std.math</a></li>
	<li><a href="std.md5.html" title="Compute MD5 digests">std.md5</a></li>
	<li><a href="std.metastrings.html" title="Metaprogramming with strings">std.metastrings</a></li>
	<li><a href="std.mmfile.html" title="Memory mapped files">std.mmfile</a></li>
	<li><a href="std.openrj.html" title="Basic database">std.openrj</a></li>
	<li><a href="std.outbuffer.html" title="Assemble data into an array of bytes">std.outbuffer</a></li>
	<li><a href="std.outofmemory.html" title="Out of memory exception">std.outofmemory</a></li>
	<li><a href="std.path.html" title="Manipulate file names, path names, etc.">std.path</a></li>
	<li><a href="std.process.html" title="Create/destroy threads">std.process</a></li>
	<li><a href="std.random.html" title="Random number generation">std.random</a></li>
	<li><a href="std.regexp.html" title="regular expressions">std.regexp</a></li>
	<li><a href="std.signals.html" title="Signals">std.signals</a></li>
	<li><a href="std.socket.html" title="Sockets">std.socket</a></li>
	<li><a href="std.socketstream.html" title="Stream for a blocking, connected Socket">std.socketstream</a></li>
	<li><a href="std.stdint.html" title="Integral types for various purposes">std.stdint</a></li>
	<li><a href="std.stdio.html" title="Standard I/O">std.stdio</a></li>
	<li><a href="std.cstream.html" title="Stream I/O">std.cstream</a></li>
	<li><a href="std.stream.html" title="Stream I/O">std.stream</a></li>
	<li><a href="std.string.html" title="Basic string operations">std.string</a></li>
	<li><a href="std.system.html" title="Inquire about the CPU, operating system">std.system</a></li>
	<li><a href="std.thread.html" title="Thread operations">std.thread</a></li>
	<li><a href="std.traits.html" title="Type traits">std.traits</a></li>
	<li><a href="std.typetuple.html" title="Type tuples">std.typetuple</a></li>
	<li><a href="std.uni.html" title="Unicode classification">std.uni</a></li>
	<li><a href="std.uri.html" title="Encode and decode Uniform Resource Identifiers (URIs)">std.uri</a></li>
	<li><a href="std.utf.html" title="Encode and decode utf character encodings">std.utf</a></li>
	<li><a href="std.zip.html" title="Read/write zip archives">std.zip</a></li>
	<li><a href="std.zlib.html" title="Compression / Decompression of data">std.zlib</a></li>
	<li><a href="std.c.fenv.html" title="Floating point environment">std.c.fenv</a></li>
	<li><a href="std.c.locale.html" title="Locale">std.c.locale</a></li>
	<li><a href="std.c.math.html" title="Math">std.c.math</a></li>
	<li><a href="std.c.process.html" title="Process">std.c.process</a></li>
	<li><a href="std.c.stdarg.html" title="Variadic arguments">std.c.stdarg</a></li>
	<li><a href="std.c.stddef.html" title="Standard definitions">std.c.stddef</a></li>
	<li><a href="std.c.stdio.html" title="Standard I/O">std.c.stdio</a></li>
	<li><a href="std.c.stdlib.html" title="Standard library">std.c.stdlib</a></li>
	<li><a href="std.c.string.html" title="Strings">std.c.string</a></li>
	<li><a href="std.c.time.html" title="Time">std.c.time</a></li>
	<li><a href="std.c.wcharh.html" title="Wide characters">std.c.wcharh</a></li>
	<li><a href="std.windows.charset.html" title="Conversion to/from Windows character sets">std.windows.charset</a></li>
	<li><a href="phobos.html#std_windows" title="Modules specific to Windows">std.windows</a></li>
	<li><a href="phobos.html#std_linux" title="Modules specific to Windows">std.linux</a></li>
	<li><a href="phobos.html#std_c_windows" title="C Windows API">std.c.windows</a></li>
	<li><a href="phobos.html#std_c_linux" title="C Linux API">std.c.linux</a></li>
    </ul>
</div>
</div>
<div id="content">
    <h1><a href="./htmlsrc/std.perf.html">std.perf</a></h1>
    
\file std/perf.d This file contains platform-independent performance classes <br><br>
<dl>
<dt><big>class <a href="./htmlsrc/std.perf.html#L35" title="At line 35.">PerformanceCounterScope</a>(T);</big></dt>
<dd>
\brief Performance counter scope class generating template<br><br>
This template declares the class PerformanceCounterScope which manages a
 performance counter instance, scoping its measurement interval by virtue of
 its supporting the RAII mechanism.<br><br>
<dl>
<dt><big><a href="./htmlsrc/std.perf.html#L44" title="At line 44.">this</a>(T <i>counter</i>); [public]</big></dt>
<dd>
\name Construction
 @{
 Constructs an instance of the PerformanceCounterScope using a reference 
 to the parameterising performance counter class, whose measurement is
 to be scoped. The measurement interval is commenced with a call to 
 <b>start&#40;&#41;</b> on the managed counter instance.<br><br></dd>
<dt><big>~<a href="./htmlsrc/std.perf.html#L57" title="At line 57.">this</a>(); [public]</big></dt>
<dd>
The measurement interval is completed with a call to <b>stop&#40;&#41;</b> on the 
 managed counter instance.<br><br></dd>
<dt><big>void <a href="./htmlsrc/std.perf.html#L64" title="At line 64.">stop</a>(); [public]</big></dt>
<dd>
Calls <b>stop&#40;&#41;</b> on the managed counter instance, so that intermediate
 timings can be taken.<br><br></dd>
<dt><big>T <a href="./htmlsrc/std.perf.html#L70" title="At line 70.">counter</a>(); [public]</big></dt>
<dd>
Returns a reference to the managed counter instance.<br><br></dd>
<dt><big>T <a href="./htmlsrc/std.perf.html#L79" title="At line 79.">m_counter</a>; [private]</big></dt>
<dd>
@}
 \name Members
 @{<br><br></dd>
<dt><big><a href="./htmlsrc/std.perf.html#L84" title="At line 84.">this</a>(PerformanceCounterScope <i>rhs</i>); [private]</big></dt>
<dd>
@}<br><br></dd></dl></dd>
<dt><big>struct <a href="./htmlsrc/std.perf.html#L92" title="At line 92.">timeval</a>; [private]</big></dt>
<dd>
<dl>
<dt><big>int <a href="./htmlsrc/std.perf.html#L94" title="At line 94.">tv_sec</a>;</big></dt>
<dd></dd>
<dt><big>int <a href="./htmlsrc/std.perf.html#L95" title="At line 95.">tv_usec</a>;</big></dt>
<dd></dd></dl></dd>
<dt><big>struct <a href="./htmlsrc/std.perf.html#L97" title="At line 97.">timezone</a>; [private]</big></dt>
<dd>
<dl>
<dt><big>int <a href="./htmlsrc/std.perf.html#L99" title="At line 99.">tz_minuteswest</a>;</big></dt>
<dd></dd>
<dt><big>int <a href="./htmlsrc/std.perf.html#L100" title="At line 100.">tz_dsttime</a>;</big></dt>
<dd></dd></dl></dd>
<dt><big>void <a href="./htmlsrc/std.perf.html#L102" title="At line 102.">gettimeofday</a>(timeval * <i>tv</i>, timezone * <i>tz</i>); [private, extern(C)]</big></dt>
<dd></dd>
<dt><big>class <a href="./htmlsrc/std.perf.html#L114" title="At line 114.">PerformanceCounter</a>;</big></dt>
<dd>
\brief A performance counter that uses the most accurate measurement APIs available on the host machine<br><br>
This class attempts to use the high performance hardware counter as its measurement resource, but failing 
 that it defaults to less accurate resources in order to guarantee that meaningful measurements are always
 available to application code<br><br> \ingroup group_synsoft_linux_perf<br><br>
<dl>
<dt><big>alias timeval <a href="./htmlsrc/std.perf.html#L119" title="At line 119.">epoch_type</a>; [private]</big></dt>
<dd>
\name Types
 @{<br><br></dd>
<dt><big>alias long <a href="./htmlsrc/std.perf.html#L124" title="At line 124.">interval_type</a>; [public]</big></dt>
<dd>
\brief The interval type<br><br>
The type of the interval measurement, a 64-bit signed integer<br><br></dd>
<dt><big>alias PerformanceCounterScope!(PerformanceCounter) <a href="./htmlsrc/std.perf.html#L130" title="At line 130.">scope_type</a>; [public]</big></dt>
<dd>
\brief The scope type<br><br>
The type with which instances of the counter class can be subject to the RAII mechanism in order
 to scope particular measurement intervals<br><br></dd>
<dt><big>void <a href="./htmlsrc/std.perf.html#L139" title="At line 139.">start</a>(); [public]</big></dt>
<dd>
@}
 \name Operations
 @{
 \brief Starts measurement<br><br>
Begins the measurement period<br><br></dd>
<dt><big>void <a href="./htmlsrc/std.perf.html#L149" title="At line 149.">stop</a>(); [public]</big></dt>
<dd>
\brief Ends measurement<br><br>
Ends the measurement period<br><br></dd>
<dt><big>interval_type <a href="./htmlsrc/std.perf.html#L163" title="At line 163.">periodCount</a>(); [public]</big></dt>
<dd>
@}
 \name Attributes
 @{
 \brief The elapsed count in the measurement period<br><br>
This represents the extent, in machine-specific increments, of the measurement period<br><br></dd>
<dt><big>interval_type <a href="./htmlsrc/std.perf.html#L171" title="At line 171.">seconds</a>(); [public]</big></dt>
<dd>
\brief The number of whole seconds in the measurement period<br><br>
This represents the extent, in whole seconds, of the measurement period<br><br></dd>
<dt><big>interval_type <a href="./htmlsrc/std.perf.html#L182" title="At line 182.">milliseconds</a>(); [public]</big></dt>
<dd>
\brief The number of whole milliseconds in the measurement period<br><br>
This represents the extent, in whole milliseconds, of the measurement period<br><br></dd>
<dt><big>interval_type <a href="./htmlsrc/std.perf.html#L193" title="At line 193.">microseconds</a>(); [public]</big></dt>
<dd>
\brief The number of whole microseconds in the measurement period<br><br>
This represents the extent, in whole microseconds, of the measurement period<br><br></dd>
<dt><big>epoch_type <a href="./htmlsrc/std.perf.html#L205" title="At line 205.">m_start</a>; [private]</big></dt>
<dd>
@}
 \name Members
 @{<br><br></dd>
<dt><big>epoch_type <a href="./htmlsrc/std.perf.html#L206" title="At line 206.">m_end</a>; [private]</big></dt>
<dd></dd></dl></dd>
<dt><big><a href="./htmlsrc/std.perf.html#L210" title="At line 210.">unittest</a>;</big></dt>
<dd></dd></dl>
    <br><br>
<br><br>
<!-- Google ad -->
<script type="text/javascript"><!--
/**/google_ad_client = "pub-5628673096434613";
/**/google_ad_width = 728;
/**/google_ad_height = 90;
/**/google_ad_format = "728x90_as";
/**/google_ad_channel ="6203743411";
/**/google_page_url = document.location;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>


<div id="copyright">
Copyright &copy; 1999-2008 by Digital Mars, All Rights Reserved |
Page generated by <a href="http://code.google.com/p/dil">dil</a> on Wed Oct  1 23:47:52 2008
</div>

</body>
</html>